#Boa:Dialog:Dialog1

import wx
import consultasBD
import Mensaje
import utiles

def create(parent):
    return Dialog1(parent)

[wxID_DIALOG1, wxID_DIALOG1ACEPTAR, wxID_DIALOG1INUSUARIO, wxID_DIALOG1MSJ, 
 wxID_DIALOG1PASSWORD, wxID_DIALOG1SALIR, wxID_DIALOG1STATICTEXT1, 
 wxID_DIALOG1STATICTEXT2, 
] = [wx.NewId() for _init_ctrls in range(8)]

class Dialog1(wx.Dialog):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Dialog.__init__(self, id=wxID_DIALOG1, name='', parent=prnt,
              pos=wx.Point(378, 276), size=wx.Size(311, 211),
              style=wx.WANTS_CHARS | wx.THICK_FRAME | wx.STAY_ON_TOP,
              title='Bienvenidos a Sussan Boutique')
        self.SetClientSize(wx.Size(295, 175))
        self.SetWindowVariant(wx.WINDOW_VARIANT_MINI)
        self.SetThemeEnabled(False)
        self.Bind(wx.EVT_INIT_DIALOG, self.OnDialog1InitDialog)

        self.staticText1 = wx.StaticText(id=wxID_DIALOG1STATICTEXT1,
              label='Usuario:', name='staticText1', parent=self,
              pos=wx.Point(48, 24), size=wx.Size(48, 16), style=0)
        self.staticText1.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, 'Tahoma'))

        self.inusuario = wx.TextCtrl(id=wxID_DIALOG1INUSUARIO, name='inusuario',
              parent=self, pos=wx.Point(112, 24), size=wx.Size(100, 21),
              style=0, value='')
        self.inusuario.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, 'Tahoma'))

        self.staticText2 = wx.StaticText(id=wxID_DIALOG1STATICTEXT2,
              label='Pass:', name='staticText2', parent=self, pos=wx.Point(64,
              56), size=wx.Size(31, 16), style=0)
        self.staticText2.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
              False, 'Tahoma'))

        self.password = wx.TextCtrl(id=wxID_DIALOG1PASSWORD, name='password',
              parent=self, pos=wx.Point(112, 56), size=wx.Size(100, 21),
              style=wx.TE_PASSWORD, value='')

        self.password.SetFont(wx.Font(10, wx.SWISS, wx.ITALIC, wx.BOLD, False,
              'Arial'))
        self.password.SetToolTipString('password')
        self.password.SetEditable(True)
        self.password.Enable(True)

        self.aceptar = wx.Button(id=wxID_DIALOG1ACEPTAR, label='Aceptar',
              name='aceptar', parent=self, pos=wx.Point(200, 96),
              size=wx.Size(75, 23), style=0)
        self.aceptar.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
              'Tahoma'))
        self.aceptar.SetThemeEnabled(False)
        self.aceptar.SetToolTipString('aceptar')
        self.aceptar.Bind(wx.EVT_BUTTON, self.OnAceptarButton,
              id=wxID_DIALOG1ACEPTAR)
        self.aceptar.Bind(wx.EVT_SET_FOCUS, self.OnAceptarSetFocus)

        self.salir = wx.Button(id=wxID_DIALOG1SALIR, label='Salir',
              name='salir', parent=self, pos=wx.Point(24, 96), size=wx.Size(75,
              23), style=0)
        self.salir.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
              'Tahoma'))
        self.salir.Bind(wx.EVT_BUTTON, self.OnSalirButton, id=wxID_DIALOG1SALIR)

        self.msj = wx.StaticText(id=wxID_DIALOG1MSJ, label='', name='msj',
              parent=self, pos=wx.Point(16, 8), size=wx.Size(0, 16), style=0)
        self.msj.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD, False,
              'Tahoma'))

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.padre = parent

    def OnAceptarButton(self, event):
        utiles.logOperaciones("Login.py: OnAceptarButton()")
        print "Login.py: OnAceptarButton()"
        
        #saco la sucursal donde solo puede entrar
        self.sucursalNro, self.nombreSuc = self._sucursal_activa()
        
        #hago todo conel usuario
        user = self.inusuario.Value
        password = self.password.Value
        usuariobuscado = " usuario = '"+user+"' and pass = '"+password+"'"
        resultado =consultasBD.cuentafilas(self,'*','usuarios',str(usuariobuscado))
        if (resultado == 0):
            #error en el acceso
            utiles.logOperaciones("ERROR: de usuario o password")
            self.msj.SetLabel("ERROR DE USUARIO O PASSWORD")
            self.inusuario.ChangeValue("")
            self.password.ChangeValue("")
            self.Refresh
            
        else: 
            usuariobuscado = " usuario = '"+user+"' and pass = '"+password+"'"
            resultado =consultasBD.executaSQL(self,'*','usuarios',str(usuariobuscado))
            for r in resultado:
                if (r[2]==self.sucursalNro): # es igual la suc activa con el permiso del usuario
                    #entro correctamente
                    #actualiza la tabla usuarios que contiene los usuarios on-line
                    tablaSQL = "usuarios"
                    camposSQL = "logeado= 1 " 
                    utiles.logBD("Login.py: UPDATE %s SET %s WHERE %s" % (tablaSQL,camposSQL,usuariobuscado))
                    consultasBD.executaUpdateSQL(self,tablaSQL,camposSQL,usuariobuscado)
                    
                    #guarda en logeos
                    utiles.logOperaciones("Usuario logeado: "+str(user))
                   
                    #acceso=  date?????
                    for r in resultado:
                        # la tabla logeos es solo para auditoria. En la tabla usuarios busco quien esta logeado en tiempo real.
                        tablaSQL = "logeos"
                        camposSQL = "('"+str(user)+"','"+str(r[2])+"','1','','')"
                        idinsert = consultasBD.executaInsertSQL(self,tablaSQL,camposSQL)
                                    
                else:
                    utiles.logOperaciones("Usuario no autorizado para la sucursal: "+str(user))
                    mensaje = "Este usuario no esta habilitado para esta sucursal"
                    ventana = Mensaje.Mensaje(self,mensaje)
                    try:
                        ventana.ShowModal()
                    finally:
                        ventana.Destroy()
                        self.Close()
                        self.padre.Close()
                            
            self.Close()
    
    def _sucursal_activa(self):
        sql = "SELECT * FROM sucursales WHERE activa = 1"
        resultados = consultasBD.executaSQL(self,"*","sucursales","activa = 1")
        for r in resultados:
            utiles.logBD("Login.py: _sucursal_activa(): "+str(r[1])+" "+str(r[2]))
            return r[1], r[2]            

    def OnDialog1InitDialog(self, event):
        event.Skip()

    def OnSalirButton(self, event):
        self.Close()
        self.padre.Close()

    def OnAceptarSetFocus(self, event):
        event.Skip()
